Block-alterable memories, such as flash memories, are often used for applications in which non-volatility and programmability are desired. Typically such memory devices include a number of separately erasable blocks. To update a particular block, it is first erased and data is then written to the erased block. Different block-alterable memories exist, such as NOR and NAND flash designs, both of which use absolute physical addressing to address blocks within user memory space. In addition, such devices may be read while write memories or may not support read while write operations. In read while write implementations, bits in one set of blocks (a partition), are readable while bits in another partition are being manipulated and vice versa.
Users desire that block-alterable memories accurately store and retrieve data and operate quickly. While data may be read from flash memories rapidly, erasing flash memory takes much longer. Erase times for conventional flash memories are on the order of hundreds of milliseconds for NOR flash memories and on the order of milliseconds for NAND flash memories. While software techniques are often implemented to accommodate long erase times, these techniques involve complex software and are not always capable of hiding the impact of relatively long erase times from a user.
Thus a need exists for maximizing user perceived reliability and minimizing user perceived erase times of block-alterable memories.